<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="./lib/18/react.development.js"></script>
  <script src="./lib/18/react-dom.development.js"></script>
  <script src="./lib/babel.min.js"></script>

  <style>
    .title {
      color:aqua;
    }
  </style>
</head>
<body>
  <div id="app"></div>
  <script type="text/babel"> /* 声明使用babel进行编译 jsx => js*/
    /* 
    jsx表达式: 显示动态数据
    1. 可以是js的表达式, 不能是js的语句
    2. 可以是任意基本类型数据值, 但null、undefined和布尔值没有任何显示
    3. 可以是数组, 也可以是react元素对象，但不能是非react元素的js对象
    4. style属性值必须是一个包含样式的js对象
    */
    // 创建虚拟DOM   使用jsx
    let title = 'abc'
    const vdom = (
      <div>
        <p title={title}>---{'abc'}----</p>
        <p>---{title.toUpperCase()}----</p>
        {/* <p>---{title.toUpperCase();}----</p>  不能是语句*/}
        <p>{3}--{null}--{undefined}--{true}</p>
        {/* 自动遍历数组元素显示 */}
        <p>{[1, 'abc', true]}</p>
        {/* 可以是react元素对象，但不能是非react元素的js对象 */}
        <p>{<span>aaaa</span>}</p>
        {/* <p>{{name: 'tom', age: 12}}</p> */}
        <p style={{color: 'red'}}>aaaa</p>
      </div>
    )
    // 渲染虚拟DOM
    ReactDOM.createRoot(document.getElementById('app')).render(vdom)

    /* 
    注意:
    ● 必须有结束标签	
    ● 整个只能有一个根标签	
    ● 空标签可以自闭合
    */
  </script>
</body>
</html>